package com.shujia.day08;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

public class Demo05ConcurrentModificationException {
    public static void main(String[] args) {
        /*
            TODO ConcurrentModificationException
         */

        ArrayList<Integer> integers = new ArrayList<>();
        integers.add(4);
        integers.add(3);
        integers.add(6);
        integers.add(1);

        ListIterator<Integer> iterator = integers.listIterator();


        // 当迭代器中获取到的数据为偶数时，那么就对数据进行删除
//        while (iterator.hasNext()) {
//            Integer getValue = iterator.next();
//            if(getValue % 2 == 0){
//                iterator.remove();
//            }
//        }
//        System.out.println(integers);
//        System.out.println(iterator);
//
//        while (iterator.hasPrevious()){
//            System.out.println(iterator.previous());
//        }

        // TODO 对于迭代器进行遍历数据删除时，只能使用迭代器中的remove方法进行删除

//        while (iterator.hasNext()) {
//            Integer getValue = iterator.next();
//            if (getValue % 2 == 0) {
//                // java.util.ConcurrentModificationException
//                integers.remove(getValue);
//            }
//        }

        /*
            Exception in thread "main" java.util.ConcurrentModificationException
                at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
                at java.util.ArrayList$Itr.next(ArrayList.java:851)
                at com.shujia.day08.Demo05ConcurrentModificationException.main(Demo05ConcurrentModificationException.java:37)

           对于Java中的错误：
                ① 错误类型  ConcurrentModificationException
                ② 问题发生的位置   at ...  一般先找自己编写的代码位置

         */




    }
}
